home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-02 / vdl020d.zip / VVDS.DOC < prev    next >
Text File  |  1993-04-14  |  5KB  |  168 lines

  1. {
  2. ════════════════════════════════════════════════════════════════════════════
  3.  
  4.  Visionix Virtual DMA Services Unit (VVDS)
  5.  Copyright 1991,92,93 Visionix
  6.  ALL RIGHTS RESERVED
  7.  
  8. ────────────────────────────────────────────────────────────────────────────
  9.  
  10.  Revision history in reverse chronological order:
  11.  
  12.  Initials  Date      Comment
  13.  --------  --------  -------------------------------------------------------
  14.  
  15.  mep       03/27/93  Unit created.
  16.  
  17. ────────────────────────────────────────────────────────────────────────────
  18. }
  19.  
  20. Unit VVDS;
  21.  
  22.  
  23. {────────────────────────────────────────────────────────────────────────────}
  24.  
  25. Const
  26.  
  27.   {-------------------------------------------}
  28.   { Product Numbers - use with VVDSGetVersion }
  29.   {-------------------------------------------}
  30.  
  31.   vdspnQMAPS      = $0000;  { Quadtel's QMAPS }
  32.   vdspnHPMM       = $0000;  { Hewlett-Packard's HPMM.SYS }
  33.   vdspnEMM386     = $0001;  { Microsoft's EMM386.EXE }
  34.   vdspn386MAX     = $4560;  { Qualitas' 386MAX }
  35.   vdspnMC         = $4D43;  { V Communication's Memory Commander }
  36.   vdspnQEMM386    = $5145;  { Quarterdeck's QEMM-386 }
  37.  
  38.   vdsMaxArray     = $F;
  39.  
  40.   {-----------------------------------------}
  41.   { Version Flags - use with VVDSGetVersion }
  42.   {-----------------------------------------}
  43.  
  44.   vdsvfPCXTBus    = $1;     { DMA in first megabyte only }
  45.   vdsvfPhyBuf     = $2;     { Physical buffer/Remap region in first megabyte }
  46.   vdsvfAutoRemap  = $4;     { Automatic remap enabled }
  47.   vdsvfPhyCont    = $8;     { All memory is physically contiguous }
  48.  
  49. Type
  50.  
  51.   TVDSErr = BYTE;
  52.  
  53.   {---}
  54.  
  55.   TDDS = RECORD  { DMA descriptor }
  56.  
  57.     RegionSize    : LONGINT;
  58.     Offset        : LONGINT;
  59.     SegSelector   : WORD;
  60.     BufferID      : WORD;
  61.     PhysicalAddr  : LONGINT;
  62.  
  63.   END;
  64.   PDDS = ^TDDS;
  65.  
  66.   {---}
  67.  
  68.   TEDDS_Header = RECORD
  69.  
  70.     RegionSize    : LONGINT;
  71.     Offset        : LONGINT;
  72.     SegSelector   : WORD;
  73.     Rsvp          : WORD;
  74.     NumAvail      : WORD;
  75.     NumUsed       : WORD;
  76.  
  77.   END;
  78.  
  79.   TEDDS_Region = RECORD
  80.  
  81.     PhysicalAddr  : LONGINT;
  82.     Size          : LONGINT;
  83.  
  84.   END;
  85.  
  86.   TEDDS_Array = Array[0..vdsMaxArray] of TEDDS_Region;
  87.  
  88.   TEDDS = RECORD { Extended DMA descriptor }
  89.  
  90.     Header        : TEDDS_Header;
  91.     Region        : TEDDS_Array;
  92.  
  93.   END;
  94.   PEDDS = ^TEDDS;
  95.  
  96.   {---}
  97.  
  98.   TEDDSPageTable_Header = RECORD
  99.  
  100.     RegionSize    : LONGINT;
  101.     Offset        : LONGINT;
  102.     SegSelector   : WORD;
  103.     Rsvp          : WORD;
  104.     NumAvail      : WORD;
  105.     NumUsed       : WORD;
  106.  
  107.   END;
  108.  
  109.   TEDDSPageTable_Region = RECORD
  110.  
  111.     Entry         : LONGINT;
  112.  
  113.   END;
  114.  
  115.   TEDDSPageTable_Array = Array[0..vdsMaxArray] of TEDDSPageTable_Region;
  116.  
  117.   TEDDSPageTable = RECORD { Extended DMA descriptor with page table entries }
  118.  
  119.     Header        : TEDDSPageTable_Header;
  120.     PageTable     : TEDDSPageTable_Array;
  121.  
  122.   END;
  123.   PEDDSPageTable = ^TEDDSPageTable;
  124.  
  125. {────────────────────────────────────────────────────────────────────────────}
  126.  
  127. Function  VVDSErrorToStr(              ErrorCode      : TVDSErr   ) : STRING;
  128.  
  129. Function  VVDSInstalled                                             : BOOLEAN;
  130.  
  131. Function  VVDSGetVersion(          Var Version        : STRING;
  132.                                    Var ProductNum     : WORD;
  133.                                    Var ProductRev     : WORD;
  134.                                    Var MaxDMABufSize  : LONGINT;
  135.                                    Var Flags          : WORD      ) : TVDSErr;
  136.  
  137. Function  VVDSLockRegion(              Region         : PDDS;
  138.                                        Flags          : WORD      ) : TVDSErr;
  139.  
  140. Function  VVDSUnlockRegion(            Region         : PDDS;
  141.                                        Flags          : WORD      ) : TVDSErr;
  142.  
  143. Function  VVDSScatGatLockRegion(       Region         : PEDDS;
  144.                                        Flags          : WORD      ) : TVDSErr;
  145.  
  146. Function  VVDSScatGatUnlockRegion(     Region         : PEDDS;
  147.                                        Flags          : WORD      ) : TVDSErr;
  148.  
  149. Function  VVDSRequestDMABuf(           Region         : PDDS;
  150.                                        Flags          : WORD      ) : TVDSErr;
  151.  
  152. Function  VVDSReleaseDMABuf(           Region         : PDDS;
  153.                                        Flags          : WORD      ) : TVDSErr;
  154.  
  155. Function  VVDSCopyToDMABuf(            Region         : PDDS;
  156.                                        DMABufOfs      : LONGINT   ) : TVDSErr;
  157.  
  158. Function  VVDSCopyFromDMABuf(          Region         : PDDS;
  159.                                        DMABufOfs      : LONGINT   ) : TVDSErr;
  160.  
  161. Function  VVDSDisableDMATrans(         DMAChannel     : WORD      ) : TVDSErr;
  162.  
  163. Function  VVDSEnableDMATrans(          DMAChannel     : WORD;
  164.                                    Var DCountAtZero   : BOOLEAN   ) : TVDSErr;
  165.  
  166. {────────────────────────────────────────────────────────────────────────────}
  167.  
  168.